using System;
using System.Text.Json.Serialization;
using JlPay.Sdk.Core;
using JlPay.Sdk.Models;

namespace JlPay.Sdk.Models.Ledger.Merchconf
{
    /// <summary>
    /// 商户分账开通请求
    /// </summary>
    public class MerchRevOpenRequest : OrgBaseRequest
    {
        public const string ApiPrefix = "/open/ledger/merch/rev";
        public const string ApiUri = "/open";

        /// <summary>
        /// 机构代码
        /// </summary>
        [JsonPropertyName("org_code")]
        public string OrgCode { get; set; } = string.Empty;

        /// <summary>
        /// 商户类型
        /// </summary>
        [JsonPropertyName("merch_type")]
        public string MerchType { get; set; } = string.Empty;

        /// <summary>
        /// 商户号
        /// </summary>
        [JsonPropertyName("mch_id")]
        public string MchId { get; set; } = string.Empty;

        /// <summary>
        /// 营业执照号
        /// </summary>
        [JsonPropertyName("license_number")]
        public string LicenseNumber { get; set; } = string.Empty;

        /// <summary>
        /// 营业执照名称
        /// </summary>
        [JsonPropertyName("license_name")]
        public string LicenseName { get; set; } = string.Empty;

        /// <summary>
        /// 营业执照地址
        /// </summary>
        [JsonPropertyName("license_address")]
        public string LicenseAddress { get; set; } = string.Empty;

        /// <summary>
        /// 营业执照开始日期
        /// </summary>
        [JsonPropertyName("license_begin_date")]
        public string LicenseBeginDate { get; set; } = string.Empty;

        /// <summary>
        /// 营业执照结束日期
        /// </summary>
        [JsonPropertyName("license_end_date")]
        public string LicenseEndDate { get; set; } = string.Empty;

        /// <summary>
        /// 营业执照正面图片源ID
        /// </summary>
        [JsonPropertyName("license_front_source_id")]
        public string LicenseFrontSourceId { get; set; } = string.Empty;

        /// <summary>
        /// 法人姓名
        /// </summary>
        [JsonPropertyName("legal_name")]
        public string LegalName { get; set; } = string.Empty;

        /// <summary>
        /// 法人证件号
        /// </summary>
        [JsonPropertyName("legal_number")]
        public string LegalNumber { get; set; } = string.Empty;

        /// <summary>
        /// 法人证件开始日期
        /// </summary>
        [JsonPropertyName("legal_begin_date")]
        public string LegalBeginDate { get; set; } = string.Empty;

        /// <summary>
        /// 法人证件结束日期
        /// </summary>
        [JsonPropertyName("legal_end_date")]
        public string LegalEndDate { get; set; } = string.Empty;

        /// <summary>
        /// 法人证件正面图片源ID
        /// </summary>
        [JsonPropertyName("legal_front_source_id")]
        public string LegalFrontSourceId { get; set; } = string.Empty;

        /// <summary>
        /// 法人证件背面图片源ID
        /// </summary>
        [JsonPropertyName("legal_back_source_id")]
        public string LegalBackSourceId { get; set; } = string.Empty;

        /// <summary>
        /// 手机号
        /// </summary>
        [JsonPropertyName("mobile")]
        public string Mobile { get; set; } = string.Empty;

        /// <summary>
        /// 银行卡号
        /// </summary>
        [JsonPropertyName("bank_card_no")]
        public string BankCardNo { get; set; } = string.Empty;

        /// <summary>
        /// 银行卡姓名
        /// </summary>
        [JsonPropertyName("bank_card_name")]
        public string BankCardName { get; set; } = string.Empty;

        /// <summary>
        /// 银行代码
        /// </summary>
        [JsonPropertyName("bank_code")]
        public string BankCode { get; set; } = string.Empty;

        /// <summary>
        /// 银行名称
        /// </summary>
        [JsonPropertyName("bank_name")]
        public string BankName { get; set; } = string.Empty;

        /// <summary>
        /// 银行支行代码
        /// </summary>
        [JsonPropertyName("bank_branch_code")]
        public string BankBranchCode { get; set; } = string.Empty;

        /// <summary>
        /// 银行支行名称
        /// </summary>
        [JsonPropertyName("bank_branch_name")]
        public string BankBranchName { get; set; } = string.Empty;

        /// <summary>
        /// 银行卡正面照片
        /// 开户类型为1、2时，必传，银行卡正面照片的sourceId
        /// </summary>
        [JsonPropertyName("bank_front_source_id")]
        public string BankFrontSourceId { get; set; } = string.Empty;
    }
} 